/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ModuloConfiguracion;

import Acceso.Security;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONObject;
import org.json.JSONArray;
import Modelo.Sede;
import Modelo.DAL.Sede_DAO;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author andres
 */
public class ModifSedeAction extends org.apache.struts.action.Action {

    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String[] ALLOWED = {"Administrador"};

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        if (!Security.validateSession(request, ALLOWED)) {
            Security.privilegeError(response);
            return mapping.findForward("errorPriv");
        }

        ModifSedeForm formBean = (ModifSedeForm) form;
        /*ActionErrors errors = new ActionErrors();
        String nombre = formBean.getNombre();
        String direccion = formBean.getDireccion();
        String telefono = formBean.getTelefono();
        String descripcion = formBean.getDescripcion();*/
        Pattern p;

        String flag = request.getParameter("flag");
        if ((flag != null) && flag.equals("ida")) {
            System.out.println("entro en el flag ida");


            String nombreSede = formBean.getNombre();

            String select = "SELECT *,(Select count(*) from sede) FROM sede where 1 = 1 AND nombre = '" + nombreSede + "'";

            response.setContentType("text/json");
            System.out.println(select);
            Sede_DAO sDao = new Sede_DAO();
            JSONArray sede = sDao.consultarSedeTabla(select);
            System.out.println("sede " + sede);

            if (sede == null) {
                formBean.setError("");
                formBean.setSubmit("");
                formBean.setReset("");
                return mapping.findForward(FAILURE);
            }
            JSONObject Sede = new JSONObject();
            Sede.put("modificarSedeIda", sede);
            PrintWriter pw = response.getWriter();
            pw.write(Sede.toString());
            pw.flush();
            pw.close();

            formBean.setError("");
            formBean.setSubmit("");
            formBean.setReset("");
            return mapping.findForward(FAILURE);
        }
        // Necesario para llenar le formulario

        // Necesario para modificar el objeto
        String submit = formBean.getSubmit();
        //System.out.println("\n\n\n---------------\n TIPO = "+mpvf.getTipoInspeccion()+"\n-----------\n\n\n");
        if ((submit != null) && submit.equals("submit")) {

            // Necesario para resetear el formulario
            String reset = formBean.getReset();
            if ((reset != null) && reset.equals("si")) {
                System.out.println("RESETEAR!!!!!");
                formBean.reset(mapping, request);
                formBean.setError("");
                formBean.setSubmit("");
                formBean.setReset("");
                return mapping.findForward(FAILURE);
            }
            formBean.setReset("si");
            // Necesario para resetear el formulario

            System.out.println("entro en el flag submit");
            String nombreS = formBean.getNew_nombre();
            String telefono = formBean.getNew_telefono();
            String direccion = formBean.getNew_direccion();
            String descripcion = formBean.getNew_descripcion();

            //System.out.println("\n\n---------------\n tipoIns = "+tipoInspeccion+"\n-----------\n\n");

            if (nombreS == null || nombreS.equals("")) {
                formBean.setSubmit("");
                formBean.setReset("");
                formBean.setError("Debe colocar un nombre para la sede. Intente Nuevamente.");
                return mapping.findForward(FAILURE);
            }
            if (nombreS.length() < 2) {
                formBean.setError("El nombre debe contener al menos 2 caracteres. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }
            p = Pattern.compile("[^a-zA-ZáéíóúÁÉÍÓÚ0-9 ]+");
            Matcher m;
            m = p.matcher(nombreS);
            if (m.find()) {
                formBean.setError("El nombre de la sede debe contener solo caracteres. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }
//********************************************************************************

            if (direccion == null || direccion.equals("")) {
                formBean.setSubmit("");
                formBean.setReset("");
                formBean.setError("Debe colocar una direccion para la sede. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }

            if (direccion.length() < 2) {
                formBean.setSubmit("");
                formBean.setReset("");
                formBean.setError("La direccion debe contener al menos 2 caracteres. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }

            p = Pattern.compile("[^a-zA-Záéíóú0-9 ]+");
            m = p.matcher(direccion);
            if (m.find()) {
                formBean.setError("La dirección de la sede debe contener solo caracteres. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }



            if (telefono != null && !(telefono.equals(""))) {
                p = Pattern.compile("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");
                m = p.matcher(telefono);
                if (!m.matches()) {
                    formBean.setError("EL numero de telefono no cumple con el formato. Intente Nuevamente");
                    return mapping.findForward(FAILURE);
                }
            }
            //int nroInspeccion = Integer.parseInt(numeroInspeccion);
            // numeroInspeccion
            System.out.println("Entro........................");
            Sede sede = new Sede(nombreS, direccion, telefono, descripcion);
            if (Modelo.DAL.Sede_DAO.actualizarSede(sede, formBean.getNombre())) {
                formBean.reset(mapping, request);
                formBean.setError("");
                formBean.setSubmit("");
                formBean.setReset("");
                return mapping.findForward(SUCCESS);
            } else {
                formBean.setError("Error modificando la sede en la base de datos.");
                formBean.setSubmit("");
                formBean.setReset("");
                return mapping.findForward(FAILURE);
            }
        }

        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
        String nombre = request.getParameter("nombreSede");
        System.out.println("\n\nombre primera = " + nombre + "\n\n");
        formBean.setNombre(nombre);
        formBean.setError("");
        formBean.setSubmit("");
        formBean.setReset("");
        return mapping.findForward(FAILURE);
        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
    }
}
